<?php
namespace App\Http\Controllers\AppApi;

use App\admin\Service\OA;
use App\Http\Controllers\BaseController as Controller;
use App\Models\Admin\UserAccessModel;
use App\Utilities\Utility;

class BaseController extends Controller
{
    protected $app_access = 'qSoiKwpWVge4TkaryH6MKvOdceGt7ZMaF20g8H0cnXI'; //接口调用权限

    /**
     * 接口基本控制器
     */

    public function __construct()
    {
        OA::load();
        parent::__construct();
    }

    /**
     * 接口返回
     */
    public function output($data = [], $msg = "ok",
                           $code = 200, $status = 200,
                           array $headers = [], $options = 0)
    {
        $headers['Access-Control-Allow-Origin'] = '*';
        return response()->json(compact('msg', 'code', 'data'), $status, $headers, $options);
    }

    function returnJson( $code = '500',$msg = '', $data = [])
    {
        echo json_encode(array('code' => $code, 'msg' => $msg, 'data' => $data), JSON_UNESCAPED_UNICODE);
        exit;
    }

    /**
     * 返回到手机端的数据格式
     * 制作者：九哥
     * code错误代号，dataArr返回的数据
     * code：0操作成功，
     */
    public function toJson($code=0,$dataArr=array(),$msg=null)
    {
        if($msg){
            return [
                'code' => $code,
                'msg' => $msg,
            ];
        }
        $msgArr = array(
            0 => '操作成功', -1 => '接口权限错误', -2 => '参数错误',
            -3 => '没有数据', -4 => '用户已存在', -5 => 'TOKEN错误',
            -6 => '验证码已存在', -7 => '验证码错误', -8 => '手机号码格式错误',
            -9 => '用户不存在',-10 => '用户密码错误',-11 => '验证码发送失败',
            -12 => '用户密码格式错误', -13 => '您未登录或未注册', -14 => '文件格式错误',
            -15 => '文件过大', -16 => '您的资料未填写', -17 => '未上传图片',
            -18 => '你已经设置了性别', -19 => '记录不存在', -20 => '抢单已完成',
            -21 => '货单不存在', -22 => '未达验收条件',-23 =>  '文件上传错误',
            -24 => '点赞失败', -25 => '城市不存在', -26 => '数据已存在',
            -27 => '该城市不存在', -28 => '提现错误', -29 => '余额更新失败',
            -30 => '提现金额不能大于账户余额', -31 => '已完成付款',
            -32 => '付款方账户不存在', -33 => '收款方账户不存在',
            -34 => '交易类型错误', -35 => '订单交易错误',
            -36 => '付款方账户余额不足，请充值', -37 =>  '支付不存在或已到账',
            -38 => '原密码错误', -39 => '新密码格式错误', -40 => '已完成提现',
            -41 => '简历已发送', -42 => '简历未发送', -43 => '面试未邀请',
            -44 => '面试已邀请', -45 => '评价已经存在',
            -99 =>'非法请求',
            -100 => '操作失败',
        );
        $json = array(
            'code' => $code,
            'msg' => $msgArr[$code].'！',
        );
        if ($dataArr) { $json['data'] = $dataArr; }
        return $json;
    }

//    /**
//     * 新增用户TOKEN
//     * 制作者：九哥
//     */
//    public function accessSet($uid)
//    {
//        $start = strtotime(date('Ymd').'000000');
//        $end = strtotime(date('Ymd').'235959');
//        $model = UserAccessModel::where('uid',$uid)
//            ->where('created_at','>',$start)
//            ->where('created_at','<=',$end)
//            ->first();
//        if ($model) { return $model->token; }
//        $token = Utility::getRandStr(rand(60,80));
//        $dataArr = array(
//            'uid' => $uid,
//            'token' => $token,
//            'created_at' => time(),
//        );
//        $lastId = UserAccessModel::insertGetId($dataArr);
//        return $token;
//    }
//
//    /**
//     * 获取用户UID
//     * 制作者：九哥
//     */
//    public function accessGet($token)
//    {
//        $model = UserAccessModel::where('token',$token)
//            ->orderBy('id','desc')
//            ->first();
//        if (!$model) { return 0; }
//        return $model->uid;
//    }
//
//    /**
//     * 获取用户TOKEN
//     * 制作者：九哥
//     */
//    public function accessGetByUid($uid)
//    {
//        $model = UserAccessModel::where('uid',$uid)
//            ->orderBy('id','desc')
//            ->first();
//        return $model->uid;
//    }
//
//    /**
//     * 根据用户经纬度lng、lat，获取用户矩形4个点的经纬度，用于SQL查询排序
//     *@param lng float 经度
//     *@param lat float 纬度
//     *@param distance float 该点所在圆的半径，该圆与此正方形内切，默认值为0.5千米
//     *@return array 正方形的四个点的经纬度坐标
//     */
//    public function getSquarePoint($lng, $lat,$distance = 10)
//    {
//        $earthdata=6371;//地球半径，平均半径为6371km
//        $dlng =  2 * asin(sin($distance / (2 * $earthdata)) / cos(deg2rad($lat)));
//        $dlng = rad2deg($dlng);
//        $dlat = $distance/$earthdata;
//        $dlat = rad2deg($dlat);
//        $arr = array(
//            'left_top'=>array('lat'=>$lat + $dlat,'lng'=>$lng-$dlng),
//            'right_top'=>array('lat'=>$lat + $dlat, 'lng'=>$lng + $dlng),
//            'left_bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng - $dlng),
//            'right_bottom'=>array('lat'=>$lat - $dlat, 'lng'=>$lng + $dlng)
//        );
//        return $arr;
//    }
//
//    /**
//     * 腾讯地图，通过2坐标计算距离
//     *@param lngStart float 经度
//     *@param latStart float 纬度
//     *@param lngEnd float 经度
//     *@param latEnd float 纬度
//     *@return array 正方形的四个点的经纬度坐标
//     */
//    public function getDistanceByPoints($lngStart,$latStart,$lngEnd,$latEnd)
//    {
//        // GET请求：http://apis.map.qq.com/ws/distance/v1/?mode=driving&from=39.983171,116.308479&to=39.996060,116.353455;39.949227,116.394310&key=OB4BZ-D4W3U-B7VVO-4PJWW-6TKDJ-WPB77
//        $mode = 'driving'; //出行方式
//        //第三方地图腾讯地图,九哥申请的：
//        $map_key = 'JWYBZ-7LK3K-KRNJA-AGOHX-CIZNK-RCFXV';
//        $pointStart = $lngStart.','.$latStart;
//        $pointEnd = $lngEnd.','.$latEnd;
//        $url = 'http://apis.map.qq.com/ws/distance/v1/?mode='.$mode.'&from='.$pointStart.'&to='.$pointEnd.'&key='.$map_key;
//        $string = '';
//        $res = $this->getCurl($url,'get','json',$string);
//        if ($res['status']!=0 ||
//            !isset($res['result']['elements'][0]['distance'])) {
//            return false;
//        }
//        return $res['result']['elements'][0]['distance'];
//    }
}